#ifndef __M_MYLOG_H
#define __M_MYLOG_H

#include "logger.hpp"

namespace MyLog
{
    Logger::ptr RootLogger()
    {
        return LoggerManager::GetInstance().RootLogger();
    }

    Logger::ptr GetLogger(const std::string& name)
    {
        return LoggerManager::GetInstance().GetLogger(name);
    }


    #define DEBUG(fmt, ...) DEBUG(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define INFO(fmt, ...) INFO(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define WARN(fmt, ...) WARN(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define ERROR(fmt, ...) ERROR(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define FATAL(fmt, ...) FATAL(__FILE__, __LINE__, fmt, ##__VA_ARGS__)

    #define debug(fmt, ...) RootLogger()->DEBUG(fmt, ##__VA_ARGS__)
    #define info(fmt, ...) RootLogger()->INFO(fmt, ##__VA_ARGS__)
    #define warn(fmt, ...) RootLogger()->WARN(fmt, ##__VA_ARGS__)
    #define error(fmt, ...) RootLogger()->ERROR(fmt, ##__VA_ARGS__)
    #define fatal(fmt, ...) RootLogger()->FATAL(fmt, ##__VA_ARGS__)

}



#endif